home *** CD-ROM | disk | FTP | other *** search
/ Clickx 47 / Clickx 47.iso / assets / software / switchproxy.xpi / chrome / switchproxy.jar / content / dialogs / editproxy_old.js < prev    next >
Encoding:
Text File  |  2006-04-11  |  5.1 KB  |  191 lines

  1.  
  2. var gIsEdit     = false;
  3. var gName        = "";
  4. var gUrl        = "";
  5. var gList;
  6. var gListDB;
  7. var gProxyNameField;
  8. var gProxyUrlField;
  9.  
  10. function initVals(){
  11.     
  12.     //Set Globals
  13.     gList             = opener.document.getElementById('proxy-list');
  14.     gListDB            = opener.document.getElementById('proxy-list-popup').database;
  15.     gProxyNameField    = document.getElementById('proxy-name');
  16.     gProxyUrlField    = document.getElementById('proxy-url');
  17.     
  18.     if(window.arguments.length > 0 && window.arguments[0] == "edit"){
  19.         
  20.         //Set Globals
  21.         gIsEdit    = true;
  22.         gName     = gList.selectedItem.label;
  23.         gUrl     = gList.selectedItem.value;
  24.         
  25.         //Fill
  26.         gProxyNameField.value    = gName;
  27.         gProxyUrlField.value    = gUrl;
  28.         proxy-list-popup
  29.     }
  30. }
  31.  
  32. function saveProxy(){
  33.             
  34.     //Init
  35.     var oProxyElem    = null;
  36.     var oSource        = null;
  37.     var oDs            = gListDB.GetDataSources();
  38.     var oRdf        = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService();
  39.         oRdf        = oRdf.QueryInterface(Components.interfaces.nsIRDFService);    
  40.     var oRoot        = oRdf.GetResource(gRdfRoot);
  41.     var oRdfC        = Components.classes["@mozilla.org/rdf/container;1"].createInstance();
  42.         oRdfC        = oRdfC.QueryInterface(Components.interfaces.nsIRDFContainer);
  43.     
  44.     
  45.     //Observe
  46.     var observer = {
  47.       onAssert            : function(ds, source, predicate, target){alert('assert');},
  48.       onUnassert          : function(ds, source, predicate, target){alert('unassert');},
  49.       onChange            : function(ds, source, predicate, oldTarget, newTarget){alert('change');},
  50.       onMove              : function(ds, oldSource, newSource, predicate, target){alert('move');},
  51.       onBeginUpdateBatch  : function(ds){alert('beginUpdateBatch');},
  52.       onEndUpdateBatch    : function(ds){alert('endUpdateBatch');}
  53.     };
  54.     
  55.     //Validation
  56.         //Empty
  57.         if(gProxyNameField.value == ""){
  58.             alert("The Proxy Name field cannot be empty");
  59.             
  60.             gProxyNameField.focus();
  61.             gProxyNameField.value = gName;
  62.             gProxyNameField.setSelectionRange(0, gProxyNameField.textLength);
  63.             
  64.             return false;
  65.         }
  66.         else if(gProxyUrlField.value == ""){
  67.             alert("The Proxy URL field cannot be empty");
  68.             
  69.             gProxyUrlField.focus();
  70.             gProxyUrlField.value = gUrl;
  71.             gProxyUrlField.setSelectionRange(0, gProxyUrlField.textLength);
  72.             
  73.             return false;
  74.         }
  75.         //Special Chars
  76.         else if(!allowedChars(gProxyNameField.value)){
  77.             alert("The name field contains invalid characters");
  78.             return false;
  79.         }
  80.         else if(!allowedChars(gProxyUrlField.value)){
  81.             alert("The url field contains invalid characters");
  82.             return false;
  83.         }
  84.         
  85.         try{
  86.                 
  87.             //Get Element to edit
  88.             while(oDs.hasMoreElements()){
  89.                 oSource = oDs.getNext();
  90.                 oSource = oSource.QueryInterface(Components.interfaces.nsIRDFDataSource);
  91.                 
  92.                 if(oSource.URI == gRdfFile){
  93.                     
  94.                     oSource.AddObserver(observer);
  95.                     
  96.                     oRdfC.Init(oSource, oRoot);
  97.                     var aElements = oRdfC.GetElements();
  98.                     
  99.                     while(aElements.hasMoreElements()){
  100.                         oProxy = aElements.getNext();
  101.                         oProxy = oProxy.QueryInterface(Components.interfaces.nsIRDFResource);
  102.                                         
  103.                         var oProp = oRdf.GetResource(gRdfNodeName);
  104.                         var oTrgt = oSource.GetTarget(oProxy, oProp, true);
  105.                         
  106.                         if(oTrgt instanceof Components.interfaces.nsIRDFLiteral){
  107.                             //Correct Element
  108.                             if(oTrgt.Value == gName){
  109.                                 oProxyElem = oProxy;
  110.                             }
  111.                             //Does the New Name Already Exists?
  112.                             else if((!gIsEdit || simplify(gName) != simplify(gProxyNameField.value)) 
  113.                                         && simplify(oTrgt.Value) == simplify(gProxyNameField.value)){ 
  114.                                 alert("That name already exists");
  115.                                 return;
  116.                             }
  117.                         }
  118.                     }
  119.                     
  120.                     break;
  121.                 }
  122.             }
  123.             
  124.             //Add or Edit
  125.             if(!gIsEdit || (gIsEdit && oProxyElem != null)){
  126.                 var oNewName     = oRdf.GetLiteral(gProxyNameField.value);
  127.                 var oNewUrl     = oRdf.GetLiteral(gProxyUrlField.value);
  128.                 
  129.                 //Edit
  130.                 if(gIsEdit){
  131.                     alert(oSource.URI)
  132.                     var oOldName     = oRdf.GetLiteral(gName);
  133.                     var oOldUrl     = oRdf.GetLiteral(gUrl);
  134.                                         
  135.                     //Name
  136.                     var oProp = oRdf.GetResource(gRdfNodeName);
  137.                     oSource.Change(oProxyElem, oProp, oOldName, oNewName);
  138.                     
  139.                     //Url
  140.                     var oProp = oRdf.GetResource(gRdfNodeProxy);
  141.                     oSource.Change(oProxyElem, oProp, oOldUrl, oNewUrl);
  142.                     
  143.                     alert("Proxy Info Changed");
  144.                 }
  145.                 //Add
  146.                 else{
  147.                     var oProxyElem    = oRdf.GetResource(gRdfRoot + "/" + simplify(gProxyUrlField.value));
  148.                     var oProxyName    = oRdf.GetLiteral(gName);
  149.                     var oProxyUrl    = oRdf.GetLiteral(gUrl);
  150.                     
  151.                     //Name
  152.                     var oProp = oRdf.GetResource(gRdfNodeName);
  153.                     oSource.Assert(oProxyElem, oProp, oProxyName, true);
  154.                     
  155.                     //Url
  156.                     var oProp = oRdf.GetResource(gRdfNodeProxy);
  157.                     oSource.Assert(oProxyElem, oProp, oProxyUrl, true);
  158.                     
  159.                     alert("Proxy Added");
  160.                 }
  161.             }
  162.             else{
  163.                 alert("Could not access that proxy's data.");
  164.             }
  165.             
  166.         }catch(e){
  167.             alert("An error occurred\n("+ e +")");
  168.             return;
  169.         }
  170.     
  171.     return true;
  172. }
  173.  
  174. // Used to test strings
  175. //    + converts space to underscore
  176. //    + and converts to lowercase
  177. function simplify(str){
  178.     str = str.replace(/\s{2, }/g, " ");
  179.     str = str.replace(/\s/g, "_");
  180.     str = str.toLowerCase();
  181.     return str;
  182. }
  183.  
  184. //Has Special Chars
  185. //    + returns true if it only
  186. //    + contains allowed chars
  187. function allowedChars(str){
  188.     var regex = new RegExp("[\\s\\.a-zA-Z0-9_]", "g");
  189.     return regex.test(str);
  190. }
  191.